import { globalIgnores } from 'eslint/config'
import tsEslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import prettier from 'eslint-plugin-prettier'
import globals from 'globals'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
import prettierRecommended from 'eslint-plugin-prettier/recommended'

export default [
  {
    name: 'app/files-to-lint',
    files: ['**/*.{ts,mts,tsx,vue}'],
    languageOptions: {
      // 指定 tsconfig 文件路径
      globals: globals.browser
    }
  },

  globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
  // Vue的核心规则配置
  pluginVue.configs['flat/essential'],
  // TypeScript的推荐规则
  tsEslint.configs.recommended,
  {
    // 为Vue文件配置TypeScript解析器
    files: ['**/*.vue'],
    languageOptions: {
      parser: tsEslint.parser
    }
  },
  // Prettier配置（关键部分）
  // 1. 首先应用skipFormatting，跳过与Prettier冲突的ESLint格式化规则
  skipFormatting,
  // 2. 然后应用Prettier推荐配置，这会启用Prettier作为ESLint规则
  prettierRecommended,
  {
    // 3. 自定义规则配置
    plugins: { prettier },
    rules: {
      '@typescript-eslint/no-empty-function': 'off',
      '@typescript-eslint/no-explicit-any': 'off',
      '@typescript-eslint/no-unused-vars': 'off',
      '@typescript-eslint/no-this-alias': 'off',
      // vue
      'vue/multi-word-component-names': 'off',
      'vue/valid-define-props': 'off',
      'vue/no-v-model-argument': 'off',
      // 其他JavaScript规则
      'prefer-rest-params': 'off',
      // prettier
      'prettier/prettier': 'error',
      // 允许使用空Object类型 {}
      '@typescript-eslint/no-empty-object-type': 'off',
      '@typescript-eslint/no-unused-expressions': 'off'
    }
  }

]
